offline delta apply: Handle the version field
authorAlexander Larsson <alexl@redhat.com>
Thu, 10 Sep 2015 17:42:28 +0000 (19:42 +0200)
committerColin Walters <walters@verbum.org>
Mon, 14 Sep 2015 02:23:56 +0000 (22:23 -0400)
It seems the format changed and this code was not updated.

src/libostree/ostree-repo-static-delta-core.c

index f695026ee51d6bf60ae4886568b79ddb38ba51d4..cd2940baae7e2d98a8a9bb408f5c6b39d8dba5f3 100644 (file)
@@ -273,6 +273,7 @@ ostree_repo_static_delta_execute_offline (OstreeRepo                    *self,
   n = g_variant_n_children (headers);
   for (i = 0; i < n; i++)
     {
+      guint32 version;
       guint64 size;
       guint64 usize;
       const guchar *csum;
@@ -285,7 +286,14 @@ ostree_repo_static_delta_execute_offline (OstreeRepo                    *self,
       g_autoptr(GInputStream) in = NULL;
 
       header = g_variant_get_child_value (headers, i);
-      g_variant_get (header, "(@aytt@ay)", &csum_v, &size, &usize, &objects);
+      g_variant_get (header, "(u@aytt@ay)", &version, &csum_v, &size, &usize, &objects);
+
+      if (version > OSTREE_DELTAPART_VERSION)
+        {
+          g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+                       "Delta part has too new version %u", version);
+          goto out;
+        }
 
       if (!_ostree_repo_static_delta_part_have_all_objects (self, objects, &have_all,
                                                             cancellable, error))